package edu.kit.csl.cratyli.control;

import edu.kit.csl.cratyli.datatypes.Dictionary;
import edu.kit.csl.cratyli.datatypes.TextCorpus;

/**
 * A reduction strategy reduces the dictionary according a given text
 * corpus.
 */
public interface ReductionStrategy {

	/**
	 * Create a new (eventually smaller) dictionary using the old dictionary
	 * and the text corpus.
	 * 
	 * @param dict The old dictionary containing words of the text corpus
	 * @param corpus The text corpus
	 * @return a new adjusted dictionary
	 * @throws NullPointerException if one of the parameters is null
	 */
	Dictionary reduce(Dictionary dict, TextCorpus corpus);
}
